In recent years, for an information processing apparatus, various apparatuses, such as a central processing unit (CPU) and an input/output (I/O) processor, are coupled to each other through serial transmission, which is higher in speed than conventional parallel transmission.
This is because, with increasing demand for high data transfer performance among the various apparatuses, it has become difficult for the conventional parallel transmission to ensure sufficient bus width and transfer rate.
High speed serial transmission, on one hand meets the demand for high data transfer performance, but on the other hand, lacks reliability with respect to its data transmission. Thus, the high speed serial transmission requires a data retransmission system for any occurrence of a transmission error.
Transmission errors in the conventional high-speed serial transmission are rescued by using an ACK per packet. Specifically, a transmitting end specifies, for each packet, a sequence number and a cyclic redundancy check (CRC), records the transmitted packet in a retransmission buffer, and holds the recorded packet until an ACK is returned from a receiving end.
The receiving end checks the CRC of the received packet. If the packet has been normally received, the receiving end returns the ACK specifying the sequence number. If a transmission error is detected, however, the packet is discarded, and the receiving end returns a NACK specifying a sequence number of a last normally-received packet.
Further, if the transmitting end receives an ACK response, the transmitting end frees the retransmission buffer for the specified sequence number and any sequence numbers preceding the specified sequence number. If the transmitting end receives a NACK response, the transmitting end transmits the packet of the specified sequence number and any packets of sequence numbers subsequent to the specified sequence number from the retransmission buffer.
Still further, modified examples of packet by packet transmission control are known, such as a communication method of selecting, when packet transmission is performed through a serial bus, either one of communication including handshake transfer using ACK packets and communication without sending ACK packets (for example, see Japanese Laid-open Patent Publication No. 2005-210389) and a technology of making a retransmission request only for a missing packet from a receiving end in packet transmission so as to increase efficiency of data transmission (for example, see Japanese Laid-open Patent Publication No. 2000-341252).
In general, as compared with packet transfer through parallel transmission, latency increases in packet transfer through serial transmission due to serial/parallel conversion and other systems. Therefore, in the conventional packet by packet error-rescue technique, a huge retransmission buffer is required that is capable of holding all transmitted packets from the time of packet transmission to the time of ACK response reception. Moreover, flow control for confirming delivery using ACK/NACK responses is also required.
As such, the conventional serial transmission has a problem of having to spend an enormous cost on circuits and flow control, for a data retransmission system for error rescue. Moreover, even in the conventional parallel transmission, when transmission speed is regarded more important than transmission reliability and thus a recovery system is essential for any occurrence of a transmission error, cost for providing such a recovery system is required.